.\" $OpenBSD: X509V3_extensions_print.3,v 1.2 2021/11/26 13:48:21 jsg Exp $
.\"
.\" Copyright (c) 2021 Ingo Schwarze <schwarze@openbsd.org>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
.\" copyright notice and this permission notice appear in all copies.
.\"
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.Dd $Mdocdate: November 26 2021 $
.Dt X509V3_EXTENSIONS_PRINT 3
.Os
.Sh NAME
.Nm X509V3_extensions_print
.Nd pretty-print an array of X.509 extensions
.Sh SYNOPSIS
.In openssl/x509v3.h
.Ft int
.Fo X509V3_extensions_print
.Fa "BIO *bio"
.Fa "char *title"
.Fa "const STACK_OF(X509_EXTENSION) *sk"
.Fa "unsigned long flags"
.Fa "int indent"
.Fc
.Sh DESCRIPTION
For each member of the variable sized array
.Fa sk ,
.Fn X509V3_extensions_print
prints the following information to
.Fa bio
in the following order:
.Bl -bullet
.It
The extension type as printed by
.Xr i2a_ASN1_OBJECT 3 .
.It
If the extension is critical, the fixed string
.Qq "critical" .
.It
A human-readable representation of the data contained in the extension
as printed by
.Xr X509V3_EXT_print 3 ,
passing through the
.Fa flags .
If that function indicates failure,
the BER-encoded data of the extension is dumped with
.Xr ASN1_STRING_print 3
without decoding it first.
In both cases, an
.Fa indent
incremented by 4 space characters is used.
.El
.Pp
If
.Fa sk
is a
.Dv NULL
pointer or empty,
.Fn X509V3_extensions_print
prints nothing and indicates success.
.Pp
Unless
.Fa title
is
.Dv NULL ,
it is printed on its own output line before the rest of the output, and
.Fa indent
is increased by 4 space characters.
This additional global indentation is cumulative
to the one applied to individual extensions mentioned above.
.Sh RETURN VALUES
.Fn X509V3_extensions_print
is intended to return 1 on success or 0 if an error occurs.
.Sh SEE ALSO
.Xr BIO_new 3 ,
.Xr STACK_OF 3 ,
.Xr X509_EXTENSION_get_critical 3 ,
.Xr X509_get0_extensions 3 ,
.Xr X509_get_ext 3 ,
.Xr X509V3_EXT_print 3
.Sh HISTORY
.Fn X509V3_extensions_print
first appeared in OpenSSL 0.9.7 and has been available since
.Ox 3.2 .
.Sh BUGS
Many parsing and printing errors are silently ignored,
and the function may return indicating success even though
.Fa sk
contains invalid data.
Even if all the data is valid, success may be indicated  even when the
information printed is incomplete for various reasons, for example
due to memory allocation failures or I/O errors.
